<?php
require_once(getcwd()."/Modelo/bd/bd.php");
require_once(getcwd()."/Controlador/utils.php");
class UsuarioControlador {
    static function obtenerIdUltimoJuego() {
        $query="select j.idjuego, j.nombre, date_format(j.fecha_inicio,'%d/%m/%Y') as fecha_inicio, date_format(j.fecha_fin,'%d/%m/%Y') as fecha_fin,
            j.texto_web
        from juego j left join jugador_x_juego jj on j.idjuego=jj.idjuego
        where j.estado='activo' order by j.fecha_inicio desc limit 1";

        return BD::ejecutarQuerySelectUnitario($query);

    }
    static function mostrar_Menu($usuario) {
        $juego=UsuarioControlador::obtenerIdUltimoJuego();
        require_once("Vista/menu_usuario.php");
        return $juego;
    }
    static function verJuego() {
        require_once("Vista/Juego/MenuVerJuego.php");
        require_once("Modelo/Juego.php");
        if(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego'])) {
            $juego=Juego::verJuego($_REQUEST['idjuego']);
            $juego['texto_web'] = str_replace(array("\r\n", "\r", "\n"), "<br />", $juego['texto_web']);
            
            
            require_once("Vista/Juego/Detalle.php");
        }
        else die("Juego No encontrado");
    }
    static function busquedaJuegos() {
        require_once("Vista/Juego/Menu.php");
        require_once("Modelo/Juego.php");
        require_once("include/utils/ps_pagination.php");
        $query_juegos=Juego::buscarJuegos();
        $pager = new PS_Pagination($query_juegos, 15, 5,'accion='.$_REQUEST['accion']);
        
        $juegos = $pager->paginate();
        require_once("Vista/Juego/Lista.php");
    }

    static function busquedaAcciones() {
        require_once("Vista/Accion/Menu.php");
        require_once("Modelo/Accion.php");
        require_once("include/utils/ps_pagination.php");
        $query_acciones=Accion::buscarAcciones();
        $pager = new PS_Pagination($query_acciones, 10, 5,'accion='.$_REQUEST['accion']);
        
        $acciones = $pager->paginate();
        require_once("Vista/Accion/Lista.php");
    }
    static function grabarUsuario() {
        require_once("Vista/Usuarios/Menu.php");
        require_once("Modelo/Usuario.php");
        $id=isset($_REQUEST['idusuario'])?$_REQUEST['idusuario']:"";
        if (testUnique()) {
            killVars();
            $usuario=Usuario::grabarUsuario($id,$_REQUEST['nombre'],$_REQUEST['mail'],$_REQUEST['usuario'], $_REQUEST['pwd'],$_REQUEST['estado'],$_REQUEST['tipo']);
            require_once("Vista/Usuarios/Detalle.php");
        }
        else {
            killVars();
            UsuarioControlador::verUsuarioForm();
        }

    }
    static function verUsuarioForm() {
        require_once("Vista/Usuarios/Menu.php");
        $juego=false;
        if(isset($_REQUEST['idusuario'])) {
            require_once("Modelo/Usuario.php");
            $usuario=Usuario::verUsuario($_REQUEST['idusuario']);
        }
        require_once("Vista/Usuarios/Formulario.php");
    }
    static function verUsuario() {
        require_once("Vista/Usuarios/Menu.php");
        require_once("Modelo/Usuario.php");
        $usuario=Usuario::verUsuario($_REQUEST['id_usuario']);
        require_once("Vista/Usuarios/Detalle.php");
    }
    static function inscribirJugadoresPendientes() {

        require_once("Modelo/Juego.php");
        $juego=(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))?array('idjuego'=>$_REQUEST['idjuego']):(self::obtenerIdUltimoJuego());
        if (testUnique()) {
            killVars();
            Juego::InscribirJugadoresPendiente($juego["idjuego"]);
            $jugadores=Juego::JugadoresxJuego($juego["idjuego"]);
            UsuarioControlador::verJugadoresxJuego();
        }
        else {
            killVars();
            UsuarioControlador::busquedaJugadores();
        }
    }

    static function grabarJuego() {
        require_once("Modelo/Juego.php");
        $texto_web=isset($_REQUEST['texto_web'])?$_REQUEST['texto_web']:"";
        $texto_web = str_replace(array("\r\n", "\r", "\n"), "<br />", $texto_web);
        
        $id=isset($_REQUEST['idjuego'])?$_REQUEST['idjuego']:"";
        $flagConsolidado=0;
        if (testUnique()) {
            killVars();
            if ($id!="")
            {
                $juego=Juego::verJuego($id);
                if ($juego['estado']!='terminado' and  $_REQUEST['estado']=='terminado')
                    {
                        $flagConsolidado=1;
                    }
            }
            $juego=Juego::grabarJuego($_REQUEST['nombre'],$_REQUEST['estado'],$_REQUEST['fecha_inicio'],
                    $_REQUEST['fecha_fin'],$_REQUEST['monto_inicial'],$_REQUEST['tipo_cambio'],$_REQUEST['porcentaje_venta'],
                    $texto_web,$id);
            require_once("Vista/Juego/MenuVerJuego.php");
            require_once("Vista/Juego/Detalle.php");
        }
        else {
            killVars();
            if (isset($_REQUEST['idjuego']) and $_REQUEST['idjuego']!="")
                UsuarioControlador::verJuego();
            else
                UsuarioControlador::verJuegoForm();
        }
        if($flagConsolidado and $id!="")
        {
            Juego::consolidaRankingJugadores($id);
        }

    }
    static function br2nl( $input ) {
    $juego['texto_web'] = str_replace('<br \/>',"\\n",$juego['texto_web']);
    }
    static function verJuegoForm() {
        require_once("Vista/Juego/Menu.php");
        $juego=false;
        if((isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))) {
            require_once("Modelo/Juego.php");
            $juego=Juego::verJuego($_REQUEST['idjuego']);
           
        }
        require_once("Vista/Juego/Formulario.php");
    }
    static function verAccion() {
        require_once("Vista/Accion/Menu.php");
        require_once("Modelo/Accion.php");
        if(isset($_REQUEST['idaccion'])) {
            $accion=Accion::verAccion($_REQUEST['idaccion']);
            require_once("Vista/Accion/Detalle.php");
        }
        else die("Accion No encontrado");
    }
    
    static function grabarAccion() {
        require_once("Vista/Accion/Menu.php");
        require_once("Modelo/Accion.php");
        if (testUnique()) {
            killVars();
            $id=isset($_REQUEST['idaccion'])?$_REQUEST['idaccion']:"";
            $accion=Accion::grabarAccion($_REQUEST['empresa'],$_REQUEST['ticker'],$_REQUEST['moneda'],$_REQUEST['estado'],$id);
            require_once("Vista/Accion/Detalle.php");
        }
        else {
            killVars();
            verAccionForm();
        }
    }
    static function verAccionForm() {
        require_once("Vista/Accion/Menu.php");
        $accion=false;
        if(isset($_REQUEST['idaccion'])) {
            require_once("Modelo/Accion.php");
            $accion=Accion::verAccion($_REQUEST['idaccion']);
        }
        require_once("Vista/Accion/Formulario.php");
    }

    static function verJugador() {
        require_once("Vista/Jugador/Menu.php");
        require_once("Modelo/Jugador.php");
        if(isset($_REQUEST['idjugador'])) {
            $jugador=Jugador::verJugador($_REQUEST['idjugador']);
            require_once("Vista/Jugador/Detalle.php");
        }
        else die("Accion No encontrado");
    }
    static function busquedaUsuarios() {
        require_once("Vista/Usuarios/Menu.php");
        require_once("Modelo/Usuario.php");
        $usuarios=Usuario::buscarUsuarios();
        require_once("include/utils/ps_pagination.php");
        $query_usuarios=Usuario::buscarUsuarios();
        $pager = new PS_Pagination($query_usuarios, 15, 5,'accion='.$_REQUEST['accion']);
        
        $usuarios = $pager->paginate();
        require_once("Vista/Usuarios/Lista.php");
    }
    static function busquedaJugadores() {
        require_once("Vista/Jugador/Menu.php");
        require_once("Modelo/Jugador.php");
        require_once("include/utils/ps_pagination.php");
        $juego=self::obtenerIdUltimoJuego();
        $query_jugadores=Jugador::buscarJugadores();
        $pager = new PS_Pagination($query_jugadores, 15, 5,'accion='.$_REQUEST['accion']);
        
        $jugadores = $pager->paginate();
        require_once("Vista/Jugador/Lista.php");
    }
    static function grabarJugador() {
        require_once("Vista/Jugador/Menu.php");
        require_once("Modelo/Jugador.php");
        $id=isset($_REQUEST['idjugador'])?$_REQUEST['idjugador']:"";
        $idusuario=isset($_REQUEST['idusuario'])?$_REQUEST['idusuario']:"";
        if (testUnique()) {
            killVars();
            require_once("Modelo/Usuario.php");
            $usuario=Usuario::grabarUsuario($idusuario,$_REQUEST['nombre']." ".$_REQUEST['ap_paterno']." ".$_REQUEST['ap_materno'],
                    $_REQUEST['mail'],$_REQUEST['mail'], $_REQUEST['pwd'],
                    'activo','jugador');
            $jugador=Jugador::grabarJugador($_REQUEST['nombre'],$_REQUEST['ap_paterno'],$_REQUEST['ap_materno'],
                    $_REQUEST['tipo_documento'],$_REQUEST['num_documento'],$_REQUEST['mail'],
                    $_REQUEST['celular'],$_REQUEST['celular2'],$_REQUEST['telefono'],
                    $_REQUEST['especialidad'],$_REQUEST['universidad'],$_REQUEST['estado'],$usuario['idusuario'],
                    $_REQUEST['idjugador']);
            require_once("Vista/Jugador/Detalle.php");
        }
        else {
            killVars();
            if (isset($_REQUEST['formulario']) and $_REQUEST['formulario']=='1') {
                require_once("formulario_mensaje.php");
            }
            else
                UsuarioControlador::verJugadorForm();
        }

    }
    static function verJugadorForm() {
        require_once("Vista/Jugador/Menu.php");
        $accion=false;
        if(isset($_REQUEST['idjugador'])) {
            require_once("Modelo/Jugador.php");
            $jugador=Jugador::verJugador($_REQUEST['idjugador']);
        }
        $admin=1;
        require_once("Vista/Jugador/Formulario.php");
    }

    static function verJugadoresxJuego() {
        require_once("Vista/Juego/MenuVerJuego.php");
        require_once("Modelo/Juego.php");
        require_once("include/utils/ps_pagination.php");
        $juego=(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))?array('idjuego'=>$_REQUEST['idjuego']):(self::obtenerIdUltimoJuego());

        $query_jugadores=Juego::JugadoresxJuego($juego["idjuego"]);
        $emails=Juego::obtenerMailsJugadoresPendientes($juego["idjuego"]);
        
        $pager = new PS_Pagination($query_jugadores, 15, 5,'accion='.$_REQUEST['accion'].'&idjuego='.$juego["idjuego"]
                .'&nombre='.$_REQUEST['nombre'].'&apellidos='.$_REQUEST['apellidos'].'&estado='.$_REQUEST['estado']);
        
        $jugadores = $pager->paginate();
        require_once("Vista/Juego/ListaJugadores.php");
    }
    static function cargarCotizaciones() {
        require_once("Vista/Juego/MenuVerJuego.php");
        require_once("Modelo/Juego.php");
        
        $fecha=date("Y-m-d");
        
        if (isset($_REQUEST['fecha']) and $_REQUEST['fecha']!="")
            $fecha=obtenerFormatoFechaBD($_REQUEST['fecha']);
        $tickers_noAgregados=Juego::cargarCotizaciones($fecha);
        if (!is_array($tickers_noAgregados) and !$tickers_noAgregados) {
            echo "El archivo no existe!";
        }
        $juego=(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))?array('idjuego'=>$_REQUEST['idjuego']):UsuarioControlador::obtenerIdUltimoJuego();
        if(isset($juego['idjuego'])) {
            $cotizaciones=Juego::verCotizaciones($juego['idjuego']);
            $dias=Juego::verDias($juego['idjuego']);
        }
        require_once("Vista/Juego/Cotizaciones.php");
    }
    static function verCotizaciones() {
        
        require_once("Vista/Juego/MenuVerJuego.php");
        $juego=false;
        $juego=(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))?array('idjuego'=>$_REQUEST['idjuego']):(self::obtenerIdUltimoJuego());
        
            require_once("Modelo/Juego.php");
            $cotizaciones=Juego::verCotizaciones($juego["idjuego"]);
            $dias=Juego::verDias($juego["idjuego"]);
        
        require_once("Vista/Juego/Cotizaciones.php");
    }
    static function verRanking() {
        require_once("Vista/Juego/MenuVerJuego.php");
        require_once("Modelo/Juego.php");
        require_once("include/utils/ps_pagination.php");
        $juego=false;
        $juego=(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))?array('idjuego'=>$_REQUEST['idjuego']):(self::obtenerIdUltimoJuego());

        $juego=Juego::verJuego($juego['idjuego']);
        if($juego['estado']=='terminado')
            $query_jugadores=Juego::obtenerQueryRankingAntiguo($juego['idjuego']);
        else
            $query_jugadores=Juego::obtenerRankingActual($juego["idjuego"]);
        $pager = new PS_Pagination($query_jugadores, 100, 5,'accion='.$_REQUEST['accion']);
        $jugadores = $pager->paginate();
        require_once("Vista/Juego/Ranking.php");
    }
    static function enviarMailsInscripcion($emails){
        $mensaje="<html><body>Estimado(a): ".$emails['nombre'].",<br>
            Se ha inscrito al juego <br><br>
            Atte.
            Inversiones PUCP<br>
            <img src='http://inv.com.pe/logo%20inversiones2.gif' width='100'>
            </body></html>";
        
        foreach($emails as $email)
            {
                enviaCorreoAutenticado($mensaje,$email,"[INV] Jugador Inscrito");
            }
    }
    static function inscribirJugadores() {
        require_once("Vista/Juego/MenuVerJuego.php");
        require_once("Modelo/Juego.php");
        require_once("include/utils/ps_pagination.php");
        $emails=array();
        if (testUnique()) {
            killVars();
            $juego=(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))?array('idjuego'=>$_REQUEST['idjuego']):(self::obtenerIdUltimoJuego());
            $emails=Juego::InscribirJugadores($idjuego);
            if (count($emails)>0){
                self::enviarMailsInscripcion($emails);
            }
                
            $query_jugadores=Juego::JugadoresxJuego($juego["idjuego"]);
        $pager = new PS_Pagination($query_jugadores, 15, 5,'accion='.$_REQUEST['accion']);

        $jugadores = $pager->paginate();
            require_once("Vista/Juego/ListaJugadores.php");
        }
        else {
            killVars();
            UsuarioControlador::verJugadoresxJuego();
        }
    }

    static function desinscribirJugadores() {
        require_once("Vista/Juego/MenuVerJuego.php");
        require_once("Modelo/Juego.php");
        require_once("include/utils/ps_pagination.php");
        if (testUnique()) {
            killVars();
            $juego=(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))?array('idjuego'=>$_REQUEST['idjuego']):(self::obtenerIdUltimoJuego());
                Juego::DesinscribirJugadores($idjuego);

            $query_jugadores=Juego::JugadoresxJuego($juego["idjuego"]);
        $pager = new PS_Pagination($query_jugadores, 15, 5,'accion='.$_REQUEST['accion']);

        $jugadores = $pager->paginate();
            require_once("Vista/Juego/ListaJugadores.php");
        }
        else {
            killVars();
            UsuarioControlador::verJugadoresxJuego();
        }
    }

    static function borrarJugadores() {
        require_once("Vista/Juego/MenuVerJuego.php");
        require_once("Modelo/Juego.php");
        require_once("include/utils/ps_pagination.php");
        if (testUnique()) {
            killVars();
            $juego=(isset($_REQUEST['idjuego']) and !empty($_REQUEST['idjuego']))?array('idjuego'=>$_REQUEST['idjuego']):(self::obtenerIdUltimoJuego());
                Juego::BorrarJugadores($idjuego);

            $query_jugadores=Juego::JugadoresxJuego($juego["idjuego"]);
        $pager = new PS_Pagination($query_jugadores, 15, 5,'accion='.$_REQUEST['accion']);

        $jugadores = $pager->paginate();
            require_once("Vista/Juego/ListaJugadores.php");
        }
        else {
            killVars();
            UsuarioControlador::verJugadoresxJuego();
        }
    }
    static function verCartera() {
        require_once("Vista/Jugador/Menu.php");
        require_once("Modelo/Jugador.php");
        require_once("Modelo/Juego.php");
        require_once("include/utils/ps_pagination.php");
        $juegos_opciones=Juego::opcionesJuegosxJugador($_REQUEST['idjugador']);
        $acciones=Jugador::verCartera($_REQUEST['idjugador_x_juego']);
        
        require_once("Vista/Jugador/Cartera.php");

    }
    static function verOperacionesAdmin() {
        require_once("Vista/Jugador/Menu.php");
        require_once("Modelo/Jugador.php");
        require_once("Modelo/Juego.php");
        require_once("include/utils/ps_pagination.php");
        $query_operaciones=Jugador::verOperaciones($_REQUEST['idjugador_x_juego']);
        
        $pager = new PS_Pagination($query_operaciones, 15, 5,'accion='.$_REQUEST['accion']);
        $operaciones = $pager->paginate();
        $juegos_opciones=Juego::opcionesJuegosxJugador($_REQUEST['idjugador']);
        require_once("Vista/Jugador/Operaciones_admin.php");
    }
    static function chat($usuario,$juego) {
        require_once("Vista/chat.php");
    }
    static function logout() {
        logout();
    }
    static function ejecutaAccion($accion,$usuario) {
        UsuarioControlador::mostrar_Menu($usuario);
        UsuarioControlador::$accion($usuario);

    }
}
?>
